/*! \file Material.h
 *	\brief <write description for Material.h>
 *
 *	created:	2010/04/12
 *	created:	12:4:2010   18:13
 *	filename: 	c:\src\tactics-engine\libs\gd\Material.h
 *	file path:	c:\src\tactics-engine\libs\gd
 *	file base:	Material
 *	file ext:	h
 *	author:		Vitalii Trubchaninov
 *				venngraydog@gmail.com
 */

#ifndef _GD_MATERIAL_H_
#define _GD_MATERIAL_H_

#pragma once

#include <core/SmartPtr.h>

namespace tt{
namespace gd{

class DeviceContext;
class PixelShader;
class VertexShader;

class Material
{
public:
	Material();
	~Material();

	void setShaders(const SharedPtr<PixelShader>&, const SharedPtr<VertexShader>&);
	
	const SharedPtr<PixelShader> pixelShader() const;
	const SharedPtr<VertexShader> vertexShader() const;

	void apply(DeviceContext*);

private:
	SharedPtr<PixelShader> m_pixelShader;
	SharedPtr<VertexShader> m_vertexShader;
};

} //namespace gd
} //namespace tt
#include "Material.inl"

#endif //_GD_MATERIAL_H_